package com.zhiche.lisa.bms.service.bill;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.zhiche.lisa.bms.dao.model.bill.BillIo;

import java.util.List;

/**
 * <p>
 * 客户或承运商账单 服务类
 * </p>
 *
 * @author WangShuiJin
 * @since 2018-09-06
 */
public interface BillIoService extends IService<BillIo> {
    /**
     * 查询客户或承运商账单列表（分页）
     *
     * @param page     分页/查询条件
     * @param billType 账单类型
     * @return
     */
    Page<BillIo> queryBillIoPage(Page<BillIo> page, String billType);

    /**
     * 查询客户或承运商的客户列表
     *
     * @param billType 账单类型
     * @return
     */
    List<BillIo> queryBillIoCustomerList(String billType);

    /**
     * 查询客户或承运商的账单状态
     *
     * @param billType
     * @return
     */
    List<String> getBillStatus(String billType);


    /**
     * 根据账单编号和类型，得到一条客户或承运商账单
     *
     * @param billCode 账单编号
     * @param billType 账单类型
     * @return
     */
    BillIo getBillIoByTypeAndCode(String billCode, String billType);

    /**
     * 新增客户或承运商账单
     *
     * @param billIo
     * @return
     */
    Long insertBillIo(BillIo billIo);

    /**
     * 删除客户或承运商账单
     *
     * @param billCode 账单编号
     * @param billType 账单类型
     */
    void deleteBillIo(String billCode, String billType);

    /**
     * 修改或承运商账单状态
     *
     * @param billCode
     * @param billStatus
     * @param billType
     */
    void updateBillIo(String billCode, String billStatus, String billType);

    /**
     * 无租户信息查询
     *
     * @param ew
     * @return
     */
    List<BillIo> selectListNoTenant(EntityWrapper ew);

    /**
     * 根据code获取对应集合
     *
     * @param codes
     * @return
     */
    List<BillIo> selectBillListByBillCode(List<String> codes);

    /**
     * 批量推送BMS
     *
     * @param billCodeList
     */
    void batchPushToBms(List<String> billCodeList);

    /**
     * 批量删除客户账单
     *
     * @param billIoIdList
     */
    void batchDeleteBillIo(List<Long> billIoIdList);
}
